package guoanmaker.personal.business.model;

import java.util.Date;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.springframework.format.annotation.DateTimeFormat;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;

import guoanmaker.personal.helper.common.abstractobj.IdEntity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
 * 
* @ClassName: PersonalUser 
* @Description: 用户实体
* @author Yvonne_MGL
* @date 2017年7月6日 下午3:48:40 
*  
 */
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="t_personal_user")
public class PersonalUser extends IdEntity{
	private String username;//用户名(手机号)
	private String password;//密码
	@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") 
	private Date createTime;//注册时间
	private String nickname;//昵称
	private String birthday;//生日
	private String name;//名字
	private String email;//邮箱
	private String remark;//备注
	private String portrait;//头像存储地址
	private String portraitName;//头像名称
	private String isProvider;//是否成为了服务商,0为未申请,1为已申请,2为已成为,3为审核失败,4为被冻结
	private Date applyForProviderTime;//申请时间
	private Date isProviderTime;//通过审核时间
	private String isFreeze;//是否被冻结 1为被冻结
	//openID的作用：openid是此网站上唯一对应用户身份的标识，
	//网站可将此ID进行存储便于用户下次登录时辨识其身份，或将其与用户在网站上的原有账号进行绑定。
	private String weibouuid;//微博uuid
	private String wechatopenid;//微信openid
	private String qqopenid;//qq openid
	private String wechatnickname;//微信昵称
	private String qqnickname;//qq昵称
	private String weibonickname;//微博昵称
	private String wechatportrait;//微信头像存储地址
	private String qqportrait;//qq头像存储地址
	private String weiboportrait;//微博头像存储地址
	private String wechatportraitN;//微信头像名称
	private String qqportraitN;//qq头像名称
	private String weiboportraitN;//微博头像名称
	private String thirdtype;//登录类型    1====>  微信   2 ====》  qq   3=====> 微博
	private String wechat;//微信账号
	private String qq;//qq账号
	private String weibo;//微博账号
	private String jpushid;//推送id
	private String jpushAlias;//推送别名
	private int wrongBout;//验证失败次数
	private Date wrongTime;//最后一次验证错误时间
	private Date lastLandTime;//最后一次登录时间
	private String createType;//注册方式  1为PC     2为APP
	private String channelSource;//渠道来源   1今日头条客户端    2网易新闻客户端    3搜狗引擎      4360引擎
	
	
	private String company;//所属公司
	private String department;//部门
	
	private String stage;//发展阶段
	private String bent;//兴趣爱好
	
	
	private String recusername;//邀请人账号
	@ManyToMany
    @JoinTable(name =  "t_personal_role_user",joinColumns = { @JoinColumn(name = "userid") }, inverseJoinColumns = {
            @JoinColumn(name = "roleid") })
    //@JSONField(serialize=false)
    private Set<PersonalRole> roles;
	
	@OneToMany(mappedBy="user",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
    private List<PersonalInvoice> invoices;//发票
	
	@OneToMany(mappedBy="user",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
    private List<PersonalAddress> addresses;//地址
	
	@OneToMany(mappedBy="user",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
	@JSONField(serialize=false)
	private Set<PersonalUserCoupon> puCoupons;

}
